home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / SOUND / CRYS270.ZIP / CRYSFR.DOC < prev    next >
Encoding:
Text File  |  1995-06-26  |  32.1 KB  |  726 lines

  1.  
  2.  
  3.  
  4.                            CRYSTAL PLAYER Version 2.70
  5.  
  6.             Un  player  de  MOD  simple  et  des  routines  pour  vos
  7.                                    programmes
  8.  
  9.  
  10.                         Programmé par Sébastien GRANJOUX
  11.                                   Dilvish / MWB
  12.  
  13.  
  14.  
  15.  
  16.        ATTENTION:  Vous ne pouvez utiliser ce programme qu'à vos risques
  17.        et  périls.  Je ne saurais être  tenu  pour responsable de toutes
  18.        pertes  ou  dommages conséquents à  son  utilisation. Je ne donne
  19.        aucune  garantie quant à son fonctionnement  à part le fait qu'il
  20.        occupera de la place sur votre disque dur.
  21.  
  22.  
  23.  
  24.  
  25.  Sommaire
  26. -------------------------------------------------------------------------------
  27.  
  28.  
  29.        I ................................................. Licence
  30.        II ................................... Contenu de l'archive
  31.  
  32.        III ....................................... Fonctionnalités
  33.        IV .......................................... Le MOD player
  34.  
  35.        V ............................................. Utilisation
  36.        VI ....................... Les fonctions de la bibliothèque
  37.        VII .............................. Questions souvent posées
  38.  
  39.        VIII ........................................ Remerciements
  40.        IX ............................................... Contacts
  41.        X .......................... Où trouver la dernière version
  42.  
  43.  
  44.  
  45.  
  46.  Chapitre I : Licence
  47. -------------------------------------------------------------------------------
  48.  
  49.  
  50.            Ce  programme  vous  permet  de jouer  des  modules (fichiers
  51.        musicaux  avec  l'extension .MOD), et  comprend  des routines que
  52.        vous  pouvez utiliser dans vos  propres programmes, en respectant
  53.        les conditions suivantes:
  54.  
  55.            Vous  pouvez inclure librement Crystal Player, dans n'importe
  56.        quel  freeware, si vous me mentionnez comme l'auteur des routines
  57.        sonores.  J'aimerais aussi que vous  m'envoyez un message pour me
  58.        dire où je peux trouver votre programme, ce dernier point n'étant
  59.        pas une obligation.
  60.            Pour   une   utilisation   commerciale   (en   incluant   les
  61.        sharewares),   vous   devez  me   contacter  pour  connaître  les
  62.        conditions  supplémentaires  et  obtenir  mon  accord.  Je  pense
  63.        demander une version complète (enregistrée) de votre programme et
  64.        une petite somme dépendant du prix de votre programme.
  65.  
  66.            Ce  programme est  fourni avec  toutes ses sources, pour vous
  67.        permettre  de  les modifier et de  les adapter à vos besoins. Ces
  68.        modifications  doivent  rester strictement  personnelles, mais je
  69.        serais  très heureux de recevoir des améliorations à inclure dans
  70.        la  nouvelle  version.  Je veux juste  garder  un contrôle sur le
  71.        dévelloppement de mon programme.
  72.  
  73.            Vous pouvez par contre distribuer librement ce programme dans
  74.        sa  version originale avec tous  les fichiers qui l'accompagnent,
  75.        et je vous encourage vivement à le faire, à la condition que vous
  76.        ne preniez pas plus de 5 USD de frais pour sa diffusion.
  77.  
  78.            Allez  voir  les  informations à la  fin  de  ce fichier pour
  79.        savoir comment me contacter.
  80.  
  81.  
  82.  
  83.  
  84.  Chapitre II : Contenu de l'archive
  85. -------------------------------------------------------------------------------
  86.  
  87.            L'archive  doit  avoir le nom suivant  CRYSxxxl où xxx est le
  88.        numéro  de  version  sur trois  chiffres  (exemple  240 veut dire
  89.        version  2.4).  La  lettre  l est  un  espace  pour  les versions
  90.        publiques.  Mais  par exemple,si c'est un  B c'est une version de
  91.        test.Ce  qui veut dire qu'elle n'est probablement pas complète et
  92.        qu'il y a encore plus de chance d'avoir des bugs.
  93.  
  94.            L'archive normal comprend les 38 fichiers suivants:
  95.  
  96.        CRYS.EXE      Version exécutable du modplayer.
  97.  
  98.        CRYSTAL.LIB   Bibliothèque pour un programme C.
  99.        CRYSTAL.H     Fichier d'en-tête pour la bibliothèque.
  100.  
  101.        CRYSTAL.TPU   Unité pour un programme en Turbo Pascal.
  102.        CRYSINT.TPU   Unité pour les routines internes.
  103.        CRYSTAL.PAS   Source de l'unité de CRYSTAL.
  104.        CRYSINT.PAS   Source de l'unité des routines internes.
  105.  
  106.        CRYSEXP.C     Exemple d'utilisation en Turbo C.
  107.        CRYSEXP.PAS   Exemple d'utilisation en Turbo Pascal.
  108.  
  109.        CRYSFR.DOC    Manuel de l'utilisateur, vous êtes en train de le lire.
  110.        CRYSENG.DOC   Manuel de l'utilisateur en anglais.
  111.        HISTORY.DOC   Historique du programme (uniquement en anglais).
  112.        FILE_ID.DIZ   Description pour les listes des BBS.
  113.  
  114.  
  115.        C0MULTI.ASM   Code de démarrage du player.
  116.        CRYS.ASM      Programme principal de Crystal MOD player.
  117.        CRYSPLAY.ASM  Routines récupérant diverses infos sur le module.
  118.        GMODE3.ASM    Routines d'affichage en mode texte 3 (80x25 16 colors).
  119.  
  120.        MAKEFILE.MAK  Fichier make pour l'unité pascal et la bibliothèque C.
  121.  
  122.        CRYSERR.INC   Définitions des codes d'erreurs.
  123.        CRYSID.INC    Définitions des numéros des cartes sonores.
  124.        CRYS260.ASM   Principales routines pour jouer un module.
  125.  
  126.        CRYSDEV.INC   Déclarations pour les drivers.
  127.        CRYSDEV.ASM   Routines communes à différents drivers.
  128.        DAC.ASM       Driver pour un Convertisseur Numérique->Analogique.
  129.        SPEAKER.ASM   Driver pour le haut parleur interne.
  130.        SNDBLAST.ASM  Driver pour les Sound Blaster (8 bits mono).
  131.        GUS.ASM       Driver pour la GUS.
  132.        SNDPRO.ASM    Driver pour les Sound Blaster (8 bits stereo).
  133.        ADLIB.ASM     Driver pour la carte Adlib.
  134.  
  135.        CRYSLOAD.INC  Déclarations pour charger des modules.
  136.        CRYSLOAD.ASM  Routines communes pour charger des modules.
  137.        LOADMOD.ASM   Routines pour charger un module au format MOD.
  138.        FLOADMOD.ASM  Déclaration pour charger un MOD dans un fichier.
  139.        MLOADMOD.ASM  Déclaration pour charger un MOD dans la mémoire.
  140.        OLOADMOD.ASM  Déclaration pour charger un MOD dans un overlay.
  141.        CRYSFILE.ASM  Routines de chargement à partir d'un fichier.
  142.        CRYSOVL.ASM   Routines de chargement à partir d'overlay.
  143.        CRYSMEM.ASM   Routines de chargement à partir de la mémoire.
  144.  
  145.  
  146.  
  147.  
  148.  Chapitre III : Fonctionnalités
  149. -------------------------------------------------------------------------------
  150.  
  151.  
  152.            Ce  programme  est  entièrement  programmé  en  assembleur et
  153.        contient des instructions spécifiques au 386. Il me marchera donc
  154.        pas  sur  les XT ni les 286.  Il peut utiliser les cartes sonores
  155.        suivantes:
  156.            - le haut parleur interne (le son est pas si mal)
  157.            - un DAC (convertisser numérique->analogique) sur un port
  158.               parallèle
  159.            - une carte adlib
  160.            - une Sound Blaster (SB, SB pro et SB16) en mode mono ou stereo
  161.               mais toujours 8 bits
  162.            - une Gravis UltraSound
  163.  
  164.            Il accepte que les fichiers .MOD avec 15 ou 31 instruments et
  165.        avec  4, 6 ou 8 voies. Mais chaque sample doit avoir une longueur
  166.        inférieure  à  63Ko.  Les effets  suivants  ne sont pas reconnus:
  167.        E3,E4,E5,E7  et EF. Par contre il utilise les 8 octaves de scream
  168.        tracker 3.
  169.  
  170.            Comme  vous  le  verrez en  lisant  la  partie historique, ce
  171.        programme  a beaucoup évolué ce qui fait qu'il n'est pas des plus
  172.        facile  à comprendre. Il contient donc  au moins quelques bugs et
  173.        si  quelque chose ne marche pas, vous en avez peut être trouvé un
  174.        nouveau. Dans ce cas, contactez-moi, généralement, j'arrive à les
  175.        corriger  assez vite. Si c'est un MOD particulier qui marche mal,
  176.        j'aimerais  aussi que vous me le transmettiez ou au moins son nom
  177.        et  l'endroit  ou  le trouver. J'ai  choisi  de me  pas respecter
  178.        parfaitement  le  format du pro tracker (il  y  a 8 octaves et un
  179.        problème  possible  avec  les   tempo  étendus),  donc  certaines
  180.        différences sont normales.
  181.  
  182.  
  183.  
  184.  
  185.  Chapitre IV : Le MOD player
  186. -------------------------------------------------------------------------------
  187.  
  188.  
  189.            Le  MOD  player  contenu dans  l'archive  n'est  pas vraiment
  190.        comparable  aux autres mod player et  il possède peu d'option. Il
  191.        est  fourni pour vous permettre de juger facilement de la qualité
  192.        (et  des  défauts) des routines sonores  et vous donne un exemple
  193.        d'utilisation  de  ces  routines en  assembleur.  Il  utilise des
  194.        informations  internes des routines de  restitution de la musique
  195.        et  vous  montre  comment les utiliser  si  vous en avez vraiment
  196.        besoin.  Vous  pouvez  refaire  un  nouveau  mod  player avec mes
  197.        routines mais elles ne sont pas faites pour cela car elles gèrent
  198.        assez peu d'options et privilégient la vitesse à la qualité.
  199.  
  200.            Il  s'utilise  de manière assez  simple  et si vous l'appelez
  201.        sans paramètre, il affiche une page d'aide. Vous devez lui passer
  202.        comme paramètre au moins le nom d'un fichier MOD (l'extension est
  203.        optionnelle). Il  choisira  par défaut la  meilleure carte sonore
  204.        qu'il  trouvera  dans vos  variables d'environnement. Vous pouvez
  205.        forcer  une  carte spéciale, même si  elle  n'existe pas dans les
  206.        variables  d'environnement, ou changer la fréquence de mixage par
  207.        défaut (autour de 20KHz) en utilisant les options suivantes:
  208.  
  209.             /FRxxxx Fréquence de mixage en dizaine Hertz
  210.  
  211.             /SK       Haut parleur interne
  212.             /DCp      DAC sur le port parallèle p (1 to 4)
  213.             /SBp,i,d  Sound Blaster (8 bits mono) à l'adresse p (en
  214.                        hexadécimal 220 par exemple) avec l'IRQ i et le
  215.                        canal DMA d.
  216.             /GSp      Gravis UltraSound à l'adresse p (en hexadécimal)
  217.             /SPp,i,d  Sound Blaster pro (8 bits stereo) à l'adresse p
  218.                        (toujours en hexadécimal) avec l'IRQ i et le
  219.                        canale DMA d.
  220.             /AD       Carte adlib
  221.  
  222.            Les  paramètres  p, i ou d  ne sont pas obligatoires mais pas
  223.        les  virgules, cela oblige le player  à chercher ces valeurs dans
  224.        les  variables d'environnement. Si elles  n'existent pas il prend
  225.        des valeurs par défaut.
  226.  
  227.            Dans le player, le temps CPU utilisé correspond uniquement au
  228.        temps, utilisé par le player sans les rafraichissements d'écran à
  229.        part  ceux de l'écran principal  (instrument, aide ou vu-mètres).
  230.        Si la musique sort mal, cette valeur n'est plus significative. La
  231.        mémoire  utilisé  comprend par contre  le  player entier avec des
  232.        routines  que vous n'intégrerez à  priori pas dans vos programmes
  233.        comme l'affichage des vu-mètres.
  234.  
  235.  
  236.  
  237.  
  238.  Chapitre V : Utilisation
  239. -------------------------------------------------------------------------------
  240.  
  241.  
  242.            La source a été assemblée avec Turbo Assembleur en mode ideal
  243.        et  utilise  des  instructions  386.  Les  routines  sonores sont
  244.        principalement  rassemblées  dans CRYS260.ASM.  Pour les utiliser
  245.        vous  devez utiliser juste la  librairie et son fichier d'en-tête
  246.        ou les deux unités pour le Turbo Pascal.
  247.  
  248.            Pour  jouer  de la musique, vous  devez  appeler une série de
  249.        fonctions  dans le bon ordre.  Pour commencer, vous devez décider
  250.        quelles sont les cartes sonores supportées par votre programme en
  251.        appelant les fonctions USE correspondantes. Ces fonctions forcent
  252.        le  lieur à intégrer les drivers  à votre programme. L'ordre dans
  253.        lequel  vous  les  appelez  est  l'ordre  dans  lequel  DETECTSND
  254.        trouvera  les cartes sonores. Donc si  vous pensez que la GUS est
  255.        la  meilleure  carte  mettez  là  en  premier,  pour qu'elle soit
  256.        trouvée  même  si  il  a  aussi  une  Sound  Blaster  sur le même
  257.        ordinateur.
  258.  
  259.            Vous  pouvez  maintenant appeler  DETECTSND  pour trouver les
  260.        cartes  sonores  disponibles.  Cette  fonction  utilise juste les
  261.        variables   d'environement   pour   éviter   des   problèmes   de
  262.        compatibilités.  Donc,  si  vous n'avez  pas  de SET BLASTER dans
  263.        votre  AUTOEXEC.BAT,  cette  fonction ne  trouvera   pas la Sound
  264.        Blaster.  Pour  le  DAC, vous  pouvez  utiliser DAC=port, avec un
  265.        nombre  entre  1 et 4 pour  port, correspondant au port parallèle
  266.        sur  lequel est branché le DAC. Si la carte sonore ne possède pas
  267.        de  variable  d'environnement  attitrée,  comme  le  haut parleur
  268.        interne  ou  la  carte adlib,  elle est  toujours détectée. Enfin
  269.        retenez  que cette fonction n'est pas obligatoire c'est juste une
  270.        facilité qui vous est offerte.
  271.  
  272.            Maintenant,  vous devez charger le module à jouer. Pour cela,
  273.        vous  pouvez utiliser FLOADMOD, MLOADMOD  ou OLOADMOD suivant que
  274.        le  module  est  respectivement dans  un  fichier,  dans une zone
  275.        mémoire  ou  dans  un  overlay (simplement  ajouté  à  la  fin du
  276.        programme).  Comme  avec la plupart des  fonctions,  si il y a un
  277.        problème,  la retenu sera levé et  la fonction retournera un code
  278.        d'erreur  non  nul. Ces fonctions  sont les plus susceptibles  de
  279.        sortir  une erreur à cause d'un  fichier absent ou d'un manque de
  280.        mémoire.
  281.  
  282.            Une  fois  le module chargé,  vous devez intialiser le player
  283.        avec  SETMOD  pour  la carte sonore  à  utiliser.  Elle doit être
  284.        comprise dans celle déjà selectionnée au début avec les fonctions
  285.        USE. Notez que cette fonction fait une vérification hardware pour
  286.        vérifier si la carte sonore est réellement là. Vous ne pouvez pas
  287.        appeler  cette  fonction  avant  LOADMOD  car  c'est  dans  cette
  288.        fonction que la GUS charge les samples dans sa mémoire.
  289.  
  290.            Maintenant,  vous  n'avez plus qu'à commencer la musique avec
  291.        STARTMOD,  à  la fin de cette  fonction,  la musique commence. Si
  292.        vous  voulez  une  bonne  qualité  sonore,  éviter  d'arrêter les
  293.        interruptions,  en  appelant d'autres d'interruptions ou avec une
  294.        instruction comme cli. Dans un language de haut niveau éviter les
  295.        fonctions  trop  complexes.  Le  haut  parleur  interne  est très
  296.        sensible à cela.
  297.  
  298.            La  musique  joue,  et vous  pouvez  maintenant  utiliser les
  299.        autres  fonctions pour changer des  paramètres de la musique dans
  300.        n'importe  quel ordre comme par exemple CHANGEVOL pour le volume.
  301.        Mais il y a encore une fonction importante, qu'il fallait appeler
  302.        à  50 Hz, (en fait à chaque  frame défini en BPM  dans le module)
  303.        au  moins  dans  les  anciennes versions,  c'est  MAKEMOD.  Cette
  304.        fonction  est  très  importante  car  elle  calcule  la  musique.
  305.        Maintenant  elle  est  appelée automatiquement  si le  buffer est
  306.        presque vide. Vous n'etes donc pas obligé de vous en occuper mais
  307.        elle  peut être utile pour éviter d'avoir des interruptions assez
  308.        longues et aléatoires dans votre programme.
  309.  
  310.            Quand  vous  voulez  arrêter  la  musique  appelez simplement
  311.        STOPMOD.  Puis  vous  pouvez  rappeler  STARTMOD  si  vous voulez
  312.        seulement  une pause, ou SETMOD si vous voulez en plus changer de
  313.        carte  sonore ou même encore LOADMOD si vous voulez aussi changer
  314.        de  module. Mais attention, si vous voulez arrêter définitivement
  315.        le  programme ou charger un  autre module appelez avant UNLOADMOD
  316.        pour rendre au DOS la mémoire prise par le module.
  317.  
  318.  
  319.  
  320.  
  321.  Chapitre VI : Les fonctions de la bibliothèque
  322. -------------------------------------------------------------------------------
  323.  
  324.  
  325.            Toutes  les fonctions utilisent la  convention du pascal pour
  326.        prendre  leurs  arguments. Elles sauvegardent  toutes SI, DI, BP,
  327.        SP, DS et SS, vous pouvez donc les utiliser directement en C. Les
  328.        autres  registres peuvent avoir été modifiés. Voici maintenant le
  329.        détail  de toutes les fonctions accéssibles.
  330.        Le   code  d'erreur  est  un  entier  sur  16  bits  décrit  dans
  331.        CRYSERR.INC,  qui est  nul si il  n'y  a pas eu d'erreur. De plus
  332.        la retenue est levée en sortie si il y a eu une erreur sinon elle
  333.        est baissée (utile pour les programmeurs en assembleur).
  334.        Je rappele que dans la description  des fonctions un octet est un
  335.        entier  sur 8 bits, un mot un entier sur 16 bits et un double mot
  336.        un  entier  sur  32  bits,  un  pointeur  long  est  un  pointeur
  337.        comprenant  une  partie offset sur 16  bits et une partie segment
  338.        sur 16 bits.
  339.  
  340.  
  341.        USEGUS,USESPK,USEDAC,USEADL,USESB,USESP,USENUL
  342.  
  343.            Action    Ajoute le driver correspondant à votre programme.
  344.  
  345.            Entrée    Aucune
  346.            Sortie    Un code d'erreur
  347.  
  348.            Notes     Ces  fonctions  sont  utilisées  par  le lieur pour
  349.                      ajouter  les drivers à  votre programme. Vous devez
  350.                      les  appeler  si vous  voulez  pouvoir utiliser les
  351.                      cartes   sonores  correspondantes   par  la  suite.
  352.                      L'ordre dans lequel vous appelez ces fonctions, est
  353.                      l'ordre  dans  lequel  DETECTSND  trouve les cartes
  354.                      sonores.
  355.  
  356.  
  357.        DETECTSND
  358.  
  359.            Action    Détecte    les   cartes   sonores   installées   en
  360.                      recherchant     les    variables    d'environnement
  361.                      correspondantes.
  362.  
  363.            Entrée    Un pointeur long sur un mot pour le numéro du driver
  364.                      Un pointeur long sur un mot pour l'adresse de port
  365.                      Un pointeur long sur un octet pour l'IRQ
  366.                      Un pointeur long sur un octet pour le canal DMA
  367.            Sortie    Un code d'erreur
  368.  
  369.            Notes     Si  vous  placez  des valeurs  non  nulles dans ces
  370.                      variables,  cette routine ne les changera pas, vous
  371.                      pouvez  ainsi  forcer  la  routine  à  détecter  la
  372.                      configuration d'une carte précise. Si vous mettez 0
  373.                      comme   numéro   de  carte   sonore,  le  programme
  374.                      cherchera  les cartes sonores  dans l'ordre de leur
  375.                      déclaration   avec   les   fonctions   USE  décrite
  376.                      ci-dessus.  Pour  le DAC  le programme recherche la
  377.                      variable  d'environnement  DAC=numero du  port (1 à
  378.                      4).  Les cartes sonores restantes  qui n'ont pas de
  379.                      variable   d'environement  (carte   adlib  ou  haut
  380.                      parleur interne) sont toujours détectées.
  381.  
  382.  
  383.  
  384.        FLOADMOD
  385.  
  386.            Action    Charge un MOD à partir d'un fichier.
  387.  
  388.            Entrée    Un pointeur long sur une chaine terminée par 0
  389.            Sortie    Un code d'erreur
  390.  
  391.            Notes     Cette   fonction    alloue  elle-même  la   mémoire
  392.                      nécessaire   aux  instruments,   chaque  instrument
  393.                      utilisant  quelque kilos octets de plus que dans le
  394.                      module. Chaque instrument doit pouvoir rentrer dans
  395.                      un segment (64Ko).
  396.  
  397.  
  398.        MLOADMOD
  399.  
  400.            Action    Charge un MOD déjà en mémoire.
  401.  
  402.            Entrée    Un pointeur long sur le MOD en mémoire
  403.            Sortie    Un code d'erreur
  404.  
  405.            Notes
  406.                      Cette fonction fait exactement la même chose que la
  407.                      précédente  sauf  qu'elle  ne charge  pas  le MOD à
  408.                      partir  d'un disque. Il faut noter qu'elle alloue à
  409.                      nouveau   de   la  place   mémoire  pour  tous  les
  410.                      instruments  ce  qui fait que  le  mod se trouve en
  411.                      fait   deux  fois  en  mémoire.  Mais  vous  pouvez
  412.                      réutiliser cette place.
  413.  
  414.  
  415.        OLOADMOD
  416.  
  417.            Action    Charge un MOD à partir d'un overlay.
  418.  
  419.            Entrée    La  position du module dans  votre programme sur un
  420.                      double mot
  421.            Sortie    Un code d'erreur
  422.  
  423.            Notes
  424.                      Cette   fonction  est  équivalente  à  FLOADMOD  et
  425.                      comporte  donc  les  mêmes  restrictions.  Elle  se
  426.                      contente de la position du mod dans l'éxecutable et
  427.                      se charge de retrouver son nom.
  428.  
  429.  
  430.        UNLOADMOD
  431.  
  432.            Action    Libère la mémoire utilisée par le module.
  433.  
  434.            Entrée    Aucune
  435.            Sortie    Aucune
  436.  
  437.            Notes     Cette  fonction  doit  être  appelée à  la  fin  du
  438.                      programme ou avant de recharger un nouveau MOD pour
  439.                      rendre  au  DOS  la  place  mémoire  prise  par les
  440.                      instruments.
  441.  
  442.  
  443.  
  444.        SETMOD
  445.  
  446.            Action    Initialise la carte sonore et la fréquence de mixage.
  447.  
  448.            Entrée    Un mot pour la fréquence de mixage en disaine de Herts
  449.                      Un mot pour le numéro de la carte sonore
  450.                      Un mot pour l'adresse de la carte sonore
  451.                      Un octet pour l'IRQ
  452.                      Un octet pour le DMA
  453.            Sortie    Un code d'erreur
  454.  
  455.            Notes     Les numéros des cartes sonores sont:
  456.                        1 = Haut parleur interne
  457.                        2 = DAC
  458.                        3 = Sound Blaster (mono 8 bits)
  459.                        4 = Gravis Ultrasound
  460.                        5 = Sound Blaster pro (stereo 8 bits)
  461.                        6 = Adlib
  462.                        7 = Pas de son
  463.                      Pour le DAC le port ne correspond pas à une adresse
  464.                      mais  au numéro du port parallèle sur lequel il est
  465.                      connecté  (1 à 4). Si on passe 0 comme paramètre en
  466.                      fréquence,  la  routine choisit  une  fréquence par
  467.                      défaut  de 19kHz. Toutes les cartes n'utilisent pas
  468.                      forcément tous les paramètres. La GUS n'utilise pas
  469.                      la fréquence et joue toujours le mod à 44kHz. Seule
  470.                      la soundblaster utilise l'IRQ et le canal DMA. Pour
  471.                      la  GUS il faut noter que c'est dans cette fonction
  472.                      que  les  instruments sont  chargés dans sa mémoire
  473.                      mais il reste en mémoire centrale.
  474.  
  475.  
  476.        STARTMOD
  477.  
  478.            Action    Démarre la musique.
  479.  
  480.            Entrée    Aucune
  481.            Sortie    Aucune
  482.  
  483.            Notes     L'interruption   de   l'horloge   est   chainée   à
  484.                      l'ancienne  interruption qui est toujours appelée à
  485.                      18,2  Hz.  A  partir de  ce  moment  il faut éviter
  486.                      toutes les fonctions qui masquent les interruptions
  487.                      sous peine de dégrader considérablement la musique.
  488.  
  489.  
  490.        MAKEMOD
  491.  
  492.            Action    Calcule une "frame" (1/50s) de musique.
  493.  
  494.            Entrée    Aucune
  495.            Sortie    Aucune
  496.  
  497.            Notes     Cette     fonction    est     maintenant    appelée
  498.                      automatiquement  par  le  player sous interruption.
  499.                      Mais  vous  pouvez l'appeler  vous-même pour éviter
  500.                      des   interruptions  aléatoires  et  assez  longues
  501.                      durant  les  parties critiques  de votre programme.
  502.                      Dans  ce  cas, il faut  l'appeler  à au moins 50Hz.
  503.                      Cette  fonction  utilise  un buffer  de  4Ko donc à
  504.                      22Khz  mono, vous pouvez  faire aucun appel pendant
  505.                      180ms (9 frames), mais il faut rattraper après.
  506.  
  507.  
  508.        STOPMOD
  509.  
  510.            Action    Arrête la musique.
  511.  
  512.            Entrée    Aucune
  513.            Entrée    Aucune
  514.  
  515.            Notes
  516.                      Cette fonction vous permet d'arrêter définitivement
  517.                      la  musique  ou de pouvoir  faire une pause si vous
  518.                      rappeler  STARTMOD  par la suite.  Il  peut y avoir
  519.                      quelques   problèmes,   en   particulier   avec  la
  520.                      soundblaster,   si  vous  faites  des  pauses  trop
  521.                      rapprochées.
  522.  
  523.  
  524.  
  525.        CHANGEVOL
  526.  
  527.            Action    Fixe le volume global.
  528.  
  529.            Entrée    Un octet pour le volume (0 to 63)
  530.            Sortie    Aucune
  531.  
  532.            Notes     Change  simplement le volume de toutes les voix. Ce
  533.                      n'est pas  instantané à cause du  buffer de 4Ko qui
  534.                      apporte  du retard: 2 frames  au maximum si MAKEMOD
  535.                      n'est jamais appelé mais plus sinon.
  536.  
  537.  
  538.        SETMODPOS
  539.  
  540.            Action    Fixe la position de la musique.
  541.  
  542.            Entrée    Un mot égal à ligne+position*64
  543.            Sortie    Aucune
  544.  
  545.            Notes     Change  la  position  de  la  musique, même pendant
  546.                      qu'elle  joue.  Comme  avec  CHANGEVOL,  le  buffer
  547.                      apporte   le  même  retard.  La  position  dans  la
  548.                      séquence commence à 0.
  549.  
  550.  
  551.        GETMODPOS
  552.  
  553.            Action    Récupère la position de la musique.
  554.  
  555.            Entrée    Aucune
  556.            Sortie    Un mot égal à ligne+position*64
  557.  
  558.            Notes     Lis la position de la musique, même pendant qu'elle
  559.                      joue.  Le  buffer apporte  le même décalage qu'avec
  560.                      CHANGEVOL mais en avance cette fois ci.
  561.  
  562.  
  563.  
  564.  
  565.  Chapitre VII : Questions souvent Posées
  566. -------------------------------------------------------------------------------
  567.  
  568.  
  569.            Comment  accéder  aux variables des  routines  jouant les MOD
  570.        pour par exemple afficher le numéro du pattern en cours ?
  571.  
  572.        >>> Pour rester le plus simple possible je n'ai documenté que les
  573.        fonctions  indispensables  du  module jouant  les  MOD et l'unité
  574.        pascal  ne  contient  que  ces fonctions.  Mais  il  y a d'autres
  575.        symboles  publics  dans  ce  module et  je  les  utilise dans mon
  576.        player. Vous pouvez donc regarder dans CRYS260.ASM les différents
  577.        symboles   accesibles   et   voir   comment   les  utiliser  dans
  578.        CRYSPLAY.ASM.
  579.  
  580.  
  581.            Pourquoi  le  player  marche plus  lentement  avec  EMM386 ou
  582.        QEMM386 ?
  583.  
  584.        >>>  C'est  tout à fait normal, c'est dû au fait que quand EMM386
  585.        ou  tout autre gestionnaire de mémoire  étendue est en marche, la
  586.        machine  n'est plus en mode réel mais  en mode virtuel 86 et dans
  587.        ce mode, les interruptions prennent beaucoup plus de temps. Comme
  588.        le player les utilise beaucoup, cela le ralenti enormément.
  589.  
  590.  
  591.            Comment savoir si une fonction s'est bien déroulée ?
  592.  
  593.        >>>  Normalement,  mes  routines  renvoient 0  et  la retenue est
  594.        effacée  si  tout  s'est bien  passé.  Dans  le cas contraire, la
  595.        retenue  est  mise  et je renvoie  un  code d'erreur indiqué dans
  596.        CRYSTAL.INC.
  597.  
  598.  
  599.            Pourquoi  je n'arrive pas à charger  le module alors que j'ai
  600.        le bon nom de fichier ?
  601.  
  602.        >>>  Il est possible que la routine n'arrive pas à réserver de la
  603.        mémoire  pour  charger les instruments.  La routine demande cette
  604.        mémoire au DOS et il faut donc que votre programme ne se l'ai pas
  605.        entièrement  approprié. Dans un programme  C,il faut utiliser par
  606.        exemple  le  modèle  SMALL  qui prend  que  128Ko  de  mémoire au
  607.        maximum.  Pour  un programme pascal,  il  faut mettre l'option $M
  608.        pour  limiter  la  taille  du tas.  Enfin  si  vous programmez en
  609.        assembleur  il  faut  rendre  la  mémoire  inutilisée  par  votre
  610.        programme au démarrage avec la fonction 4Ah du DOS que ce soit un
  611.        programme COM ou EXE.
  612.  
  613.  
  614.            Comment mettre un module en overlay ?
  615.  
  616.        >>>  Il faut commencer par compiler votre programme exécutable en
  617.        appelant  la  fonction OLOADMOD avec  une valeur bidon. Puis vous
  618.        regardez   la   taille   de   votre   exécutable   après  l'avoir
  619.        éventuellement  compacté  et vous  recompilez  votre programme en
  620.        passant à OLOADMOD cette valeur. Vous pouvez alors recompacter le
  621.        résultat  avant d'ajouter le module mais il faut que la taille du
  622.        programme  reste  la  même. Enfin  pour  ajouter  votre module il
  623.        suffit    de   faire,   par   exemple,    sous   DOS   "copy   /B
  624.        programme+module".
  625.  
  626.  
  627.            Pourquoi la musique est moins forte qu'avec d'autres players ?
  628.  
  629.        >>>  Le player ne fait aucune amplification donc ca ne déforme par
  630.        le son mais le volume global est plus  faible. Deuxièmement, pour
  631.        les  utilisateurs  de sound blaster, le  player ne modifie par le
  632.        volume global de la  carte. Ceci est un choix, et vous  permet de
  633.        régler  le  volume utilisé par défaut.  Pour changer ce volume il
  634.        faut  utiliser  l'utilitaire set-sbp. Par  exemple pour mettre le
  635.        volume au maximum il faut faire set-sbp /voc:15,15 /m:15,15.
  636.  
  637.  
  638.            Comment compiler l'unité pascal avec le Turbo Pascal 7 ?
  639.  
  640.        >>>  Normalement, il ne devrait pas y avoir de  problème, mais vu
  641.        que  je ne possède que le Turbo Pascal 6, je distribue uniquement
  642.        une unité pour cette version.
  643.  
  644.  
  645.  
  646.  
  647.  Chapitre VIII : Remerciements
  648. -------------------------------------------------------------------------------
  649.  
  650.  
  651.            Je  tiens à remercier les personnes suivantes qui ont joué et
  652.        continue de jouer un rôle dans le développement de ce programme:
  653.  
  654.            William Petiot pour les tests avec la GUS et les réglages.
  655.            Tchi Southivong pour les nombreux tests avec la GUS et la SB.
  656.            Stéphane Gigandet pour les nombreux tests avec la SB.
  657.            Vincent Negrier pour les tests SB.
  658.            Stéphane Scherrer pour des documents sur la Sound Blaster.
  659.            Francis Gastellu pour le nom du player.
  660.            Mark J.Cox pour m'avoir montrer que l'on peut jouer des MOD sur PC.
  661.            CASCADA pour GUSPLAY.
  662.            VLA pour des informations sur les transferts DMA.
  663.            Bisounours / Nuage pour la traduction anglaise de ce fichier.
  664.  
  665.  
  666.  
  667.  
  668.  Chapitre IX : Contacts
  669. -------------------------------------------------------------------------------
  670.  
  671.  
  672.            Si  vous  voulez  utiliser  mes  routines  dans  un programme
  673.        commercial,  si vous trouvez un ou des bug(s), si vous voulez une
  674.        amélioration   précise,   si  vous   voulez   des  renseignements
  675.        supplémentaires  ou  si vous avez  juste  quelques remarques à me
  676.        faire vous pouvez me contacter à l'adresse suivante:
  677.  
  678.                M. Sébastien Granjoux
  679.                17 rue de Paris
  680.                         92190 Meudon
  681.                               France
  682.  
  683.            Vous  pouvez  aussi me laisser un  message sur un des ces BBS
  684.        (en France près de Paris).
  685.  
  686.            Dune BBS             +33-1-47-02-25-97  24.0 Bps
  687.            Deadline BBS         +33-1-46-48-67-63  14.4 Bps
  688.                                 +33-1-46-44-57-96  28.8 Bps
  689.            Eden BBS             +33-1-34-15-39-67  28.8 Bps
  690.                                 +33-1-34-13-95-28  28.8 Bps
  691.  
  692.            Ou avec mon adresse email. (j'espère que ca marche !)
  693.  
  694.            Sebastien.Granjoux@nuxes.frmug.fr.net
  695.            sebastien.granjoux#barnabo@sparkhq.fdn.org
  696.  
  697.            N'hésitez  pas  à me contacter,  je serai toujours heureux de
  698.        vous  répondre  et cela me donnera  l'impression  que je n'ai pas
  699.        écrit tout ce code pour rien.
  700.  
  701.  
  702.  
  703.  
  704.  Chapitre X : Où trouver la dernière version
  705. -------------------------------------------------------------------------------
  706.  
  707.            La   dernière   version  de   Crystal  Player  sera  toujours
  708.        disponible  sur  les  BBS  suivants  (il  peut  y  avoir un petit
  709.        delai).
  710.  
  711.            - France:
  712.  
  713.                Dune BBS           +33-1-47-02-25-97  24.0 Bps
  714.                Deadline BBS       +33-1-46-48-67-63  14.4 Bps
  715.                                   +33-1-46-44-57-96  28.8 Bps
  716.                Eden BBS           +33-1-34-15-39-67  28.8 Bps
  717.                                   +33-1-34-13-95-28  28.8 Bps
  718.  
  719.            Si vous voulez aussi distribuer Crystal Player, appelez un de
  720.        ces BBS.
  721.  
  722.  
  723.  
  724.                                          Sébastien Granjoux,   12/05/95
  725.  
  726.